package mysql8学习.高级.第04章_逻辑架构;

/**
 * 总之，因为查询缓存往往弊大于利，查询缓存的失效非常频繁。
 * 一般建议大家在静态表里使用查询缓存， 什么叫静态表呢?就是一般我们极少更新的表。
 * 比如，一个系统配置 表、字典表，这张表上的查询才适合使用查询缓存。
 * 好在MySQL也提供了这种 “按需使用” 的方式。
 * 你可以将
 * my.cnf 参数   MySQL8.0已删除
 * query_cache_type 设置成 DEMAND,代表当sql语句中有SQL_CACHE关键词时才缓存。
 * 比如:
 * # query_cache_type 有3个佰 0代表关闭查询缓存0FF， 1代表开启ON, 2 (DEMAND)
 * query_cache_type=2
 *
 * 这样对于默认的SQL语句都不使用查询缓存。
 * 而对于你确定要使用查询缓存的语句，可以用SQL_CACHE显式指定，像下面这个语句一样:
 * select SQL_CACHE * from test where ID=5;//进入缓存
 * select SQL_NO_CACHE * from test where ID=5;//不进入缓存
 *
 * show variables like '%query_cache_type';   #查看缓存是否开启
 *
 * show status like '%Qcache%';  #查看缓存的运行结果具体情况
 * 运行结果解析:
 * Qcache_free_blocks :表示查询缓存中还有多少剩余的blocks,如果该值显示较大，
 *      则说明查询缓存中的内存碎片过多了，可能在一定的时间进行整理。
 * Qcache_free_memory :查询缓存的内存大小，通过这个参数可以很清晰的知道当前系统的查询内存是否够用,
 *      是多了，还是不够用，DBA可以根据实际情况做出调整。
 * Qcache_hits :表示有多少次命中缓存。我们主要可以通过该值来验证我们的查询缓存的效果。
 *      数字越大，缓存效果越理想。
 * Qcache_inserts:表示多少次未命中然后插入,意思是新来的SQL请求在缓存中未找到，
 *      不得不执行查询处理,执行查询处理后把结果insert到查询缓存中。
 *      这样的情况的次数越多,表示查询缓存应用到的比较少，效果也就不理想。
 *      当然系统刚启动后，查询缓存是空的，这很正常。
 * Qcache_lowmem_prunes :该参数记录有多少条查询因为内存不足而被移除出查询缓存。
 *      通过这个值，用户可以适当的调整缓存大小。
 * Qcache_not_cached :表示因为 query_cache_type 的设置而没有被缓存的查询数量。
 * Qcache_queries_in_cache :当前缓存中缓存的查讲数量。
 * Qcache_total_blocks :当前缓存的block数量。
 *
 */
public class C1_SQL缓存的查看 {
}
